package com.easy.controller;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.easy.bean.Product;
import com.easy.bean.ProductClass;
import com.easy.common.CommonResult;
import com.easy.dao.IClassDao;
import com.easy.dao.IProductDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
@RestController
@RequestMapping("/class")
public class ClassController {
    @Autowired
    private IProductDao iProductDao;
    @Autowired
    private IClassDao iClassDao;


    // 商品分类查询商品
    @GetMapping("/all")
    public CommonResult getClassProduct(@RequestParam Integer id,
            @RequestParam(required = false) Integer sort) {
        // 创建查询条件，匹配 id 或 parent_id
        QueryWrapper<ProductClass> classQueryWrapper = new QueryWrapper<>();
        classQueryWrapper.eq("id", id)
                .or().eq("parent_id", id);
        // 查询符合条件的分类列表
        List<ProductClass> classList = iClassDao.selectList(classQueryWrapper);
        // 初始化一个空的商品列表来存储所有符合条件的商品
        List<Product> productList = new ArrayList<>();
        // 遍历分类列表，查询每个分类下的商品
        for (ProductClass cls : classList) {
            QueryWrapper<Product> productQueryWrapper = new QueryWrapper<>();
            productQueryWrapper.eq("class_id", cls.getId())  // 通过 class_id 关联商品
                    .orderByDesc("id");
            // 将符合条件的商品加入到商品列表中
            List<Product> products = iProductDao.selectList(productQueryWrapper);
//            cls.setProducts(products);  // 每个分类和分类下的商品
            productList.addAll(products); // 将每个分类下的商品加入到总的商品列表中
        }

        // 对商品列表进行二次排序
        //  1、销量 2、评分 3、价格低到高 4、价格高到低
        if(sort ==null){
            productList.sort(Comparator.comparing(Product::getId).reversed());
        }else if (sort == 1){
            productList.sort(Comparator.comparing(Product::getCount).reversed());
        }else if(sort == 2){
            productList.sort(Comparator.comparing(Product::getRatingAvg).reversed());
        }else if(sort == 3){
            productList.sort(Comparator.comparing(Product::getPrice));
        }else if(sort == 4){
            productList.sort(Comparator.comparing(Product::getPrice).reversed());
        }else{
            productList.sort(Comparator.comparing(Product::getId).reversed());
        }

        // 返回查询到的所有符合条件的商品列表
        return CommonResult.success(productList, productList.size());
    }

    // 商品分类查询分类名
    @GetMapping("/name")
    public CommonResult getClassName(@RequestParam Integer id) {
        QueryWrapper<ProductClass> classQueryWrapper = new QueryWrapper<>();
        classQueryWrapper.eq("parent_id", id);
        List<ProductClass> classList = iClassDao.selectList(classQueryWrapper);
        return CommonResult.success(classList, classList.size());
    }
}
